﻿using System;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using BBMS.DLL.Forms.Base;
using BBMS.DLL.DataContract;
using BBMS.FrontEnd.Constant;
using BBMS.DLL.Base;
using ExcelLibrary.SpreadSheet;
namespace BBMS.DLL.Forms.Catalog.Supplier
{
    public partial class frmSupplierFilter : FrmFilterBase
    {
        public frmSupplierFilter()
        {
            InitializeComponent();
            InitSearchForm();
           
        }

        private void InitSearchForm()
        {
            cbxThanhPho.Items.Add("Tất cả");
            for (int i = 0; i < FixedCode.CITY.Length; i++)
                cbxThanhPho.Items.Add(FixedCode.CITY[i]);
            cbxThanhPho.SelectedIndex = 0;
            dtpTuNgayMo.Value = new DateTime(2000, 01, 01);
        }
        
        public new static readonly string FunctionKey = "DMNCC";
        protected override string GetFunctionKey() { return "DMNCC"; }
        protected override BBMS.DLL.Base.ObjectBase GetObjectBase() { return new NhaCungCap(); }

        protected override void GenColHeaders()
        {
            lvList.Columns.Clear();
            lvList.Columns.Add("Mã NCC", 100);
            lvList.Columns.Add("Tên NCC", 150);
            lvList.Columns.Add("Tên viết tắt", 100);
            lvList.Columns.Add("Người đại diện", 100);
            lvList.Columns.Add("MST VAT", 80);
            lvList.Columns.Add("Số điện thoại", 80);
            lvList.Columns.Add("Fax", 150);
            lvList.Columns.Add("Địa chỉ", 250);
            lvList.Columns.Add("Ngày mở", 100);
            
        }
        protected override ArrayList GenSampleData()
        {
            ArrayList ar = new ArrayList();
            ar.Add(new string[] {"Mã NCC","Ngày mở", "Tình trạng","Tên NCC","Tên viết tắt","Thành phố",
                "Người đại diện","Email","Số điện thoại","Fax","Địa chỉ","Mặt hàng chủ yếu",
            "Mã số thuế VAT","Số TK","Tên ngân hàng",
            "NCC loại",/*"Theo thời vụ", "Thứ tự ưu tiên",*/
            "Phương thức thanh toán","Thời hạn thanh toán","Thời điểm thanh toán","Hạn mức",
             "Quầy cung cấp"});
            NhaCungCap nhaCungCapList = new NhaCungCap();
            ArrayList arr = nhaCungCapList.GetAllObject(fParams);
            if (arr != null)
            {
                for (int i = 0; i < arr.Count; i++)
                {
                    NhaCungCap q = (NhaCungCap)arr[i];
                    ar.Add(new string[] { q.Ma, q.NgayMo.ToString(), ((int)q.TinhTrang).ToString(), q.Ten,q.TenVietTat,q.ThanhPho,
                    q.NguoiDaiDien,q.Email,q.SoDienThoai,q.Fax,q.DiaChi,q.MatHang,
                    q.MSTVAT,q.SoTK,q.TenNganHang,
                    q.LoaiNCC,/*"Theo thời vụ", "Thứ tự ưu tiên",*/
                    q.LoaiNCC,
                    ((int)q.PhuongThucTT).ToString(),q.ThoiHanTT.ToString(),q.ThoiDiemTT.ToString(),q.HanMuc.ToString(),
                    q.QuayList});
                }
            }
            //ar.Add(new string[] { "QTP", "Quầy thực phẩm", "Food counter", "NTP" });
            // define col width
            //ar.Add(new int[] { 100, 300, 100, 300 });
            return ar;
        }

        protected override ArrayList GetImportedList(Worksheet sheet)
        {
            ArrayList arret = new ArrayList();
            for (int i = 1; i < sheet.Cells.Rows.Count; i++)
            {
                NhaCungCap ncc = new NhaCungCap();
                Cell cell = sheet.Cells[i, 0];
                ncc.Ma = cell.Value.ToString();
                cell = sheet.Cells[i, 1];
                if (cell.Value.ToString() != "") ncc.NgayMo = Convert.ToDateTime(cell.Value.ToString());
                cell = sheet.Cells[i, 2];
                foreach (TinhTrangNhaCungCap item in Enum.GetValues(typeof(TinhTrangNhaCungCap)))
                {
                    if (item.ToString() == cell.Value.ToString())
                        ncc.TinhTrang = item;
                }                
                cell = sheet.Cells[i, 3];
                ncc.Ten = cell.Value.ToString();
                cell = sheet.Cells[i, 4];
                ncc.Ten = cell.Value.ToString();
                cell = sheet.Cells[i, 5];
                ncc.TenVietTat = cell.Value.ToString();
                cell = sheet.Cells[i, 6];
                ncc.ThanhPho = cell.Value.ToString();
                cell = sheet.Cells[i, 7];
                ncc.NguoiDaiDien = cell.Value.ToString();
                cell = sheet.Cells[i, 8];
                ncc.Email = cell.Value.ToString();
                cell = sheet.Cells[i, 9];
                ncc.SoDienThoai = cell.Value.ToString();
                cell = sheet.Cells[i, 10];
                ncc.Fax = cell.Value.ToString();
                cell = sheet.Cells[i, 11];
                ncc.DiaChi = cell.Value.ToString();
                cell = sheet.Cells[i, 12];
                ncc.MatHang = cell.Value.ToString();
                cell = sheet.Cells[i, 13];
                ncc.MSTVAT = cell.Value.ToString();
                cell = sheet.Cells[i, 14];
                ncc.SoTK = cell.Value.ToString();
                cell = sheet.Cells[i, 15];
                ncc.TenNganHang = cell.Value.ToString();
                cell = sheet.Cells[i, 16];
                ncc.LoaiNCC = cell.Value.ToString();
                cell = sheet.Cells[i, 17];
                foreach (PhuongThucThanhToan item in Enum.GetValues(typeof(PhuongThucThanhToan)))
                {
                    if (item.ToString() == cell.Value.ToString())
                        ncc.PhuongThucTT = item;
                }                   
                cell = sheet.Cells[i, 18];
                if (cell.Value.ToString() != "") ncc.ThoiHanTT = Convert.ToInt32(cell.Value.ToString());
                cell = sheet.Cells[i, 19];
                ncc.ThoiDiemTT = cell.Value.ToString();
                cell = sheet.Cells[i, 20];
                if (cell.Value.ToString() != "") ncc.HanMuc = Convert.ToInt64(cell.Value.ToString());
                cell = sheet.Cells[i, 21];
                ncc.QuayList = cell.Value.ToString();
                arret.Add(ncc);                              
            
            }
            return arret;
        }

        protected override void UpdateFilterParams()
        {
            fParams = new FilterParams();
            if (txtMa.Text.Trim() != "")
            {
                FilterCondition fcMa = new FilterCondition("Ma", "Ma", "%" + txtMa.Text.Trim() + "%", SQLOperator.LIKE);
                fParams.ArParams.Add(fcMa);
            }

            if (txtMSTVAT.Text.Trim() != "")
            {
                FilterCondition fcMSTVAT = new FilterCondition("MSTVAT", "MSTVAT", "%" + txtMSTVAT.Text.Trim() + "%", SQLOperator.LIKE);
                fParams.ArParams.Add(fcMSTVAT);
            }

            FilterCondition fcTuNgayMo = new FilterCondition("NgayMo", "TuNgay", dtpTuNgayMo.Value, SQLOperator.GREATER_OR_EQUAL);
            fParams.ArParams.Add(fcTuNgayMo);
            FilterCondition fcDenNgayMo = new FilterCondition("NgayMo", "DenNgay", dtpDenNgayMo.Value, SQLOperator.LOWER_OR_EQUAL);
            fParams.ArParams.Add(fcDenNgayMo);

            /*    TinhTrangNhaCungCap status = TinhTrangNhaCungCap.DangHoatDong;
                if (rbtnChoThanhLy.Checked) status = TinhTrangNhaCungCap.ChoThanhLy;
                else if (rbtnDaThanhLy.Checked) status = TinhTrangNhaCungCap.DaThanhLy;
                else if (rbtnTamDungTT.Checked) status = TinhTrangNhaCungCap.TamDungThanhToan;*/

            if (cbxThanhPho.SelectedIndex != 0)
            {
                FilterCondition fcThanhPho = new FilterCondition("ThanhPho", "ThanhPho", cbxThanhPho.Text, SQLOperator.EQUAL);
                fParams.ArParams.Add(fcThanhPho);
            }
            fParams.CurrentPage = 0;
        }

        protected override FrmEditBase CreateEditForm(BBMS.DLL.Base.ObjectBase obj)
        {
            return new frmSupplierUpdate(obj);
        }

        protected override void AddNewObjectToList(BBMS.DLL.Base.ObjectBase obj)
        {
            if (obj == null) return;
            ListViewItem it = new ListViewItem(((NhaCungCap)obj).Ma);
            it.SubItems.Add(((NhaCungCap)obj).Ten);
            it.SubItems.Add(((NhaCungCap)obj).TenVietTat);
            it.SubItems.Add(((NhaCungCap)obj).NguoiDaiDien);
            it.SubItems.Add(((NhaCungCap)obj).MSTVAT);
            it.SubItems.Add(((NhaCungCap)obj).SoDienThoai);
            it.SubItems.Add(((NhaCungCap)obj).Fax);
            it.SubItems.Add(((NhaCungCap)obj).DiaChi);
            it.SubItems.Add(((NhaCungCap)obj).NgayMo.ToString("dd/MM/yyyy"));
            it.Tag = obj;
            lvList.Items.Add(it);
        }

        protected override void UpdateObjectToList(BBMS.DLL.Base.ObjectBase obj)
        {
            foreach (ListViewItem it in lvList.Items)
            {
                if (((NhaCungCap)it.Tag).Ma == ((NhaCungCap)obj).Ma)
                {
                    it.SubItems[1].Text = ((NhaCungCap)obj).Ten;
                    it.SubItems[2].Text = ((NhaCungCap)obj).TenVietTat;
                    it.SubItems[3].Text = ((NhaCungCap)obj).NguoiDaiDien;
                    it.SubItems[4].Text = ((NhaCungCap)obj).MSTVAT;
                    it.SubItems[5].Text = ((NhaCungCap)obj).SoDienThoai;
                    it.SubItems[6].Text = ((NhaCungCap)obj).Fax;
                    it.SubItems[7].Text = ((NhaCungCap)obj).DiaChi;
                    it.SubItems[8].Text = ((NhaCungCap)obj).NgayMo.ToString("dd/MM/yyyy");
                    it.Tag = obj;
                    break;
                }
            }
        }

        private void rbtnTatCa_CheckedChanged(object sender, EventArgs e)
        {
            if (rbtnTatCa.Checked)
            {
                rbtnTamDungTT.Checked = true;
                rbtnDaThanhLy.Checked = true;
                rbtnDangHoatDong.Checked = true;
                rbtnChoThanhLy.Checked = true;
            }
            else
            {
                rbtnTamDungTT.Checked = false;
                rbtnDaThanhLy.Checked = false;
                rbtnDangHoatDong.Checked = false;
                rbtnChoThanhLy.Checked = false;
            }
        }

   
        

     
    }
}
